package permsauth

import (
	"a-common/core/redis"
	"log/slog"
)

const bastStr = "aijuan:role:"

// AuthPerms 权限认证
func AuthPerms(role *[]string, perms string) bool {
	if role == nil || len(*role) == 0 {
		return false
	}
	for _, r := range *role {
		// 从缓存中获取权限信息
		ok, err := redis.NewRedisCli().SIsMember(bastStr+r, perms)
		if err != nil && ok {
			slog.Error(err.Error())
		}
		if err == nil && ok {
			return true
		}
	}
	return false
}

type MStruct struct {
	MenuId int64
	Perms  string
}
type RStruct struct {
	RoleId  int64
	RoleKey string
	Menus   []MStruct
}

// UploadCache 刷新权限缓存
func UploadCache() error {
	// 获取数据库权限菜单
	// allRoleMenu, err := dao.NewSysRoleDao().GetAllRoleMenu()
	// if err != nil {
	// 	return err
	// }
	// var rm []RStruct
	// 缓存菜单
	// rCil := redis.NewRedisCli()
	// for _, r := range rm {
	// 	// fmt.Printf("%d %s\n", r.RoleId, r.RoleKey)
	// 	// for _, m := range r.Menus {
	// 	// 	fmt.Printf("%+v \n", m)
	// 	// }
	// 	// 删除旧缓存
	// 	// err = rCil.Del(bastStr + r.RoleKey)
	// 	// if err != nil {
	// 	// 	return err
	// 	// }
	// 	// 缓存菜单权限
	// 	mList := make([]any, len(r.Menus))
	// 	for i, val := range r.Menus {
	// 		mList[i] = val.Perms
	// 	}
	// 	// 设置缓存
	// 	err := redis.NewRedisCli().SAdd(bastStr+r.RoleKey, mList)
	// 	if err != nil {
	// 		return err
	// 	}

	// }
	return nil
}
